# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.4.1)

# 项目信息
project (Lesson5)
# 设置版本信息
set (Demo_VERSION_MAJOR 1)
set (Demo_VERSION_MINOR 0)

#让 CMake 支持 gdb，需要指定 Debug 模式下开启 -g 选项：之后可以直接对生成的程序使用 gdb 来调试
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

# 加入一个配置头文件，用于处理 CMake 对源码的设置
#configure_file (
#        "${PROJECT_SOURCE_DIR}/config.h.in"
#        "${PROJECT_BINARY_DIR}/config.h"
#)
configure_file (
        "${PROJECT_SOURCE_DIR}/config.h.in"
        "${PROJECT_SOURCE_DIR}/config.h"
)

#添加环境检查：有时候可能要对系统环境做点检查，例如要使用一个平台相关的特性的时候。在这个例子中，我们检查系统是否自带 pow 函数。如果带有 pow 函数，就使用它；否则使用我们定义的 power 函数。
# 检查系统是否支持 pow 函数
include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
check_function_exists (pow HAVE_POW)

if(USE_MYMATH)
    message(STATUS "defined USE_MYMATH!!!!!!!!!!")
else()
    message(STATUS "NOT defined USE_MYMATH!!!!!!!!!")
endif()
# 是否使用自己的 MathTools 库
#option (USE_MYMATH "Use provided math implementation" ON)
option (USE_MYMATH "Use provided math implementation" OFF)
message(WARNING "USE_MYMATH is ${USE_MYMATH}")

if(USE_MYMATH)
    message(STATUS "defined USE_MYMATH!!!!!!!!!!")
else()
    message(STATUS "NOT defined USE_MYMATH!!!!!!!!!")
endif()

# 是否加入 MathTools 库
if (USE_MYMATH)
    include_directories ("${PROJECT_SOURCE_DIR}/math")
    add_subdirectory (math)
    set (EXTRA_LIBS ${EXTRA_LIBS} MathTools)
endif (USE_MYMATH)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 指定生成目标
add_executable(Hello ${DIR_SRCS})
target_link_libraries (Hello  ${EXTRA_LIBS})

## 生成安装包
## 构建一个 CPack 安装包
##导入 InstallRequiredSystemLibraries 模块，以便之后导入 CPack 模块；
#include (InstallRequiredSystemLibraries) #导入 InstallRequiredSystemLibraries 模块，以便之后导入 CPack 模块；
##设置一些 CPack 相关变量，包括版权信息和版本信息
#set (CPACK_RESOURCE_FILE_LICENSE
#        "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
#set (CPACK_PACKAGE_VERSION_MAJOR "${Demo_VERSION_MAJOR}")
#set (CPACK_PACKAGE_VERSION_MINOR "${Demo_VERSION_MINOR}")
##导入 CPack 模块
#include (CPack)
## 执行命令
##生成二进制安装包： cpack -C CPackConfig.cmake
##生成源码安装包： cpack -C CPackSourceConfig.cmake